#include<reg51.h>
//定义字形码数组，分别表示0~9
unsigned char code dispcode[]={0x3f,0x06,0x5b,0x4f,0x66,
															 0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char second; //定义秒变量

void main()
{
	TMOD=0x01;//工作方式1：16位定时计数器
	EA=1;//CPU总允许中断
	ET0=1;//T0允许中断
	TH0=(65536-50000)/256;//16位初值高8位
	TL0=(65536-50000)%256;//16位初值低8位
	TR0=1;//启动定时计数器
	second=0;
	while(1)
	{
		P0=dispcode[second/10]; //获取当前时间的十位 second=56s，56/10=5，56%10=6
		P2=dispcode[second%10]; //获取当前时间的个位
	}
}

void t0(void) interrupt 1 using 0
{
	unsigned char tcnt; //定义该变量用于计数脉冲
	tcnt++;
	if(tcnt==10)//50ms*20=1s
	{
		tcnt=0; //计数脉冲的变量复位
		second++; //计数秒的变量加1
	}
	if(second==100) //当计数到100秒时
	{
		second=0; //秒表恢复0，重新计数
	}
	TH0=(65536-50000)/256;
	TL0=(65536-50000)%256;
}
